package main

// 虽然是简单题，但是比官方解法更优秀~ 减去空间复杂度。
// 其实不需要创建一个额外的数组，存储找到的所有单词。 可以利用滑动窗口的概念，
// 直接建立两个变量，表示定长2的窗口即可，在判断是否满足条件并更新窗口。
// 那么只需要遍历一次text，空间复杂度O(n), 两个额外变量，空间度复杂度为常数级别，O（1）。
// go语言解题， 双百通过！ 耗时 0 ms，内存消耗2M！
func findOcurrences(text string, first string, second string) []string {
	// 定义结果集
	rst := make([]string, 0)
	// 定义 fir， sec。表示当前单词前面俩单词
	fir, sec := "", ""
	for i, j := 0, 0; j < len(text); j++ {
		// 1. 求每一个单词
		word := ""
		// 取到每一个单词
		for j < len(text) && text[j] != ' ' {
			j += 1
		}
		word = text[i:j]
		i = j + 1
		// 2. 如果满足那么就加入结果集，更新 fir，sec的值
		if fir == first && sec == second {
			rst = append(rst, word)
		}
		fir = sec
		sec = word
	}
	return rst
}
